在上篇文章介紹了 Kolla 跟 Kolla-Ansible 部署 OpenStack 的方法。在設定的部分全部都是在 globals.yml
中設定,其他則交由 Kolla-Ansible 中的 template 處理。不過這樣的方式不免在部署中顯得稍失彈性,無法根據特殊環境做客製化,於是就誕生出了 config override 的方式來進行 custom config 的設定。本篇文章將會介紹如何使用 config override 來更改 Kolla-Ansible 部署 OpenStack 的設定檔。
同樣在 globals.yml
中我們可以找到一行設定 config overrides 檔案的資料夾。預設值是 /etc/kolla/config
,可以更改為自己想要的資料夾。
# Location of configuration overrides
#node_custom_config: "/etc/kolla/config"
Kolla-Ansible 會在尋找在 /etc/kolla/config/<< 服務名稱 >>/<< 設定檔 >>
的檔案。設定檔 override 基本上可以 override 整個 OpenStack project (e.g. Nova)、OpenStack service (e.g. nova-api)、或是在特定 host 上的 service (e.g. nova-api on controller02),在使用上非常有彈性。
另外如果要對所有 service 的設定做 override,Kolla-Ansible 會尋找 /etc/kolla/config/global.conf
這個檔案。
如果想要在 OpenStack 上的 Virtual Machine 啟用巢狀虛擬化,我們需要將 libvirt 參數中 cpu_mode 設定為 host-passthrou
此時就會需要新建 /etc/kolla/config/nova/nova-compute.conf
後寫入以下兩行:
[libvirt]
cpu_mode=host-passthrough
若想要在 compute01 這個主機上更改 CPU 跟 RAM 的 allocation ratio,就會建立 /etc/kolla/config/nova/compute01/nova-compute.conf
並寫入:
[DEFAULT]
cpu_allocation_ratio = 16.0
ram_allocation_ratio = 2.0
最後如果想要更改所有 service 的 database pool size connection,就會新建一個 /etc/kolla/config/global.conf
檔案並寫入
[database]
max_pool_size = 100
policy.json 的設定方式相對一般 service 的設定檔稍微不一樣,需要將完整的 policy 檔案都放在那個 project 的資料夾下。Kolla-Ansible 會使用那個檔案 overrite 原本預設的 policy.json 檔案。
例如若想要 override Neutron 的 policy.json,部署者需要從 Neutron 原始碼中將完整的 policy.json 拿下來,修改後並放到 /etc/kolla/config/neutron/policy.json
下。
Kolla-Ansible 在已經部署完成的 OpenStack cluster 要更改設定也非常容易,只需要下:
kolla-ansible reconfigure
就會將更改的設定檔部署至環境並且重新啟動相對應的 container。
透過 config override 的方式,operator 可以很容易的針對各個 service 甚至 host 上的特定 service 做設定檔的調整。這讓使用 Kolla-Ansible 部署 OpenStack 更有彈性,能夠針對各個部署的需求進行客製化的部署。
Kolla-Ansible Advanced Configuration